Skip to content

ci: extend semver check to all features except local#832

Merged
alexhancock merged 1 commit into
mainfrom
ci/semver-check-all-features
May 5, 2026
Merged

ci: extend semver check to all features except local#832
alexhancock merged 1 commit into
mainfrom
ci/semver-check-all-features

Conversation

@DaleSeo
Copy link
Copy Markdown
Member

@DaleSeo DaleSeo commented May 5, 2026

Motivation and Context

CI's SemVer Check job currently only validates the default feature set. This exception exists because the local feature intentionally changes the public API, which could lead to false positives if checked. Unfortunately, this means that other non-default features like transport-streamable-http-server, auth, and transport-streamable-http-client-reqwest also go unchecked, even though they are stable public APIs that downstream users rely on. #824 (comment) highlighted this issue. A breaking change to a transport module wouldn't have been caught by CI.

This PR adds a second cargo semver-checks invocation to the existing semver job. It enables every published feature except for local. The feature list is generated during the job using cargo metadata and jq, filtering out local and any internal __-prefixed features. This approach is consistent with the test-no-local job already in this workflow, maintaining the same method for handling the local exception. The check for default features is kept as a separate step, ensuring that failures from the typical user experience are easy to read in CI logs.

How Has This Been Tested?

CI passes

Breaking Changes

CI-only change

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • CI / tooling

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@DaleSeo DaleSeo requested a review from a team as a code owner May 5, 2026 00:27
@github-actions github-actions Bot added T-CI Changes to CI/CD workflows and configuration T-config Configuration file changes labels May 5, 2026
@DaleSeo DaleSeo self-assigned this May 5, 2026
@alexhancock alexhancock merged commit 3bf5298 into main May 5, 2026
18 checks passed
@alexhancock alexhancock deleted the ci/semver-check-all-features branch May 5, 2026 00:44
jrmelsha added a commit to UserGeneratedLLC/rmcp-rust-sdk that referenced this pull request May 13, 2026
Brings in upstream rmcp v1.7.0:
- fix(rmcp): flatten Resource variant of PromptMessageContent (modelcontextprotocol#843)
- fix: reply -32700 on stdio parse errors instead of closing (modelcontextprotocol#833)
  -- JsonRpcError.id is now Option<RequestId> per MCP spec
- chore(rmcp): remove dependency on chrono default features (modelcontextprotocol#829)
- fix: idle-timeout log level demoted to debug (modelcontextprotocol#824)
- feat: task-based stdio examples (modelcontextprotocol#839)
- chore(deps): askama 0.15 -> 0.16 (modelcontextprotocol#830)
- ci: extend semver check to all features except local (modelcontextprotocol#832)

Conflict resolution:
- crates/rmcp/CHANGELOG.md: kept fork's bare-boolean Unreleased
  entry, inserted upstream's 1.7.0 release section beneath it
- crates/rmcp/Cargo.toml: kept fork's chrono 0.4.44 over upstream's
  0.4.38 pin, but adopted upstream's default-features = false +
  features = ["serde", "now"] from modelcontextprotocol#829 -- both intents preserved
- crates/rmcp/src/service.rs: kept fork's METHOD_NOT_FOUND demotion
  to debug (ab4ccdb) and applied upstream's JsonRpcMessage::error
  signature change to Some(id) per modelcontextprotocol#833

Workspace bumped to 1.7.0 by upstream's release-plz commit; fork
crates rmcp + rmcp-macros track that automatically via
workspace = true. anthropic-ext, JsonAndArtifact wrapper, bare-bool
schema normalisation, channel permission relay, and the rest of the
fork-only surface are unchanged. cargo check + cargo test pass with
the full anthropic-ext + server feature set; test_message_schema
absorbs the JsonRpcError.id Option change cleanly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T-CI Changes to CI/CD workflows and configuration T-config Configuration file changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants